<?php


namespace app\common\service\alipaysdk;

/**
 * 支付宝
 */
class Alipaysdk
{
    

    
    /**
     * 获取配置信息
     */
    public function config()
    {
        
        $alipay_config['sign_type']    	= strtoupper('MD5');
        $alipay_config['input_charset']	= strtolower('utf-8');
        $alipay_config['transport']    	= 'http';			//访问模式,根据自己的服务器是否支持ssl访问，若支持请选择https；若不支持请选择http
        $alipay_config['cacert']    	= 'alipay/cacert.pem';	//ca证书路径地址，用于curl中ssl校验//请保证cacert.pem文件在当前文件夹目录中
        $alipay_config['notify_url']    = Pay::APP_ALIPAY_NOTIFY_URL;
        $db_config = $this->driverConfig('Alipay');
        return array_merge($alipay_config, $db_config);
    }
    
    /**
     * 获取支付代码
     * @param array $order	订单信息数组
     * 			主要元素
     * 				order_sn		订单号
     * 				subject			商品名称
     * 				order_amount            订单总额
     * 				body			订单描述
     * 				show_url
     * @return multitype:string
     */

    /**
     * APP支付
     * @param $order
     * @return string
     */
    public function createAppPara($order)
    {
        require_once "Alipay.php";
        $alipay = new \Alipay($this->config());
//        if(empty($order)){
//            $order = [
//                'subject'=>"测试",
//                'out_trade_no'=>date("YmdHis").getRandom().time(),
//                'price'=>0.01
//            ];
//        }
        return $alipay->createAppPara($order);
    }
    /**
     *app支付回调
     * @param $order
     * @return string
     */
    public function rsaCheck($param)
    {
        require_once "Alipay.php";
        $alipay = new \Alipay($this->config());
        return $alipay->rsaCheck($param);
    }

    
    /**
     * 获取订单号
     */
    public function getOrderSn()
    {
        
        if (!empty($_POST['out_trade_no'])) {
            
            return $_POST['out_trade_no'];
        }
        
        if (!empty($_GET['out_trade_no'])) {
            
            return $_GET['out_trade_no'];
        }
        
        return null;
    }
    
    /**
     * 支付通知处理
     */
    public function notify()
    {
        
        $alipay_config = $this->config();

        require_once('alipay/AlipayNotify.php');
        $alipayNotify = new alipay\AlipayNotify($alipay_config);

        //验证是否为支付宝发送过来的请求
            
        $verify_result = $alipayNotify->verifyNotify();
        $successArr = array('TRADE_FINISHED','TRADE_SUCCESS','success');
        
        if ($verify_result && in_array($_POST['trade_status'], $successArr)){
            return true;
        }
        
        return false;
    }
    /**
     * 支付同步
     */
    public function notifyReturn()
    {
        
        $alipay_config = $this->config();

        require_once('alipay/AlipayNotify.php');
        
        $alipayNotify = new alipay\AlipayNotify($alipay_config);

        //验证是否为支付宝发送过来的请求
        $verify_result = $alipayNotify->verifyReturn();

        $successArr = array('TRADE_FINISHED','TRADE_SUCCESS','success');
        
        if ($verify_result && in_array($_GET['trade_status'], $successArr)){

            return true;
        }
        
        return false;
    }
}
